]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st/viewport: Only extend child allocation when scrolled
authorFlorian Müllner <fmuellner@gnome.org>
Sun, 28 Jun 2020 22:16:58 +0000 (00:16 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Sun, 28 Jun 2020 22:42:03 +0000 (00:42 +0200)
When scrolled, the container's allocation is smaller than the allocation
of the content. To account for that, commit 2717ca9d080eb added the
additional size reported by the layout manager to the content allocation.

However as it did so unconditionally, we now allow children to extend
outside the parent even when *not* scrolled, which breaks any constraints
set on the container (like "width" or "max-height").

Fix this by only extending the child allocation in scrollable dimensions.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2491

src/st/st-viewport.c

index fb1df91d905efe3268e0ce5f3025212ef8c20636..039eebf461bf4e546adca6293dabcda660d6dfb1 100644 (file)
@@ -261,8 +261,10 @@ st_viewport_allocate (ClutterActor           *actor,
   clutter_actor_set_allocation (actor, box);
 
   content_box = viewport_box;
-  content_box.x2 += MAX (0, min_width - avail_width);
-  content_box.y2 += MAX (0, min_height - avail_height);
+  if (priv->hadjustment)
+    content_box.x2 += MAX (0, min_width - avail_width);
+  if (priv->vadjustment)
+    content_box.y2 += MAX (0, min_height - avail_height);
 
   clutter_layout_manager_allocate (layout, CLUTTER_CONTAINER (actor),
                                    &content_box);